class Ctrljoc {
       
    private Jugador j1;
    private Jugador j2;
    private Tauler t;
    private CtrlAlg alg;
    private Configuracio conf;
    private CtrlDades ctrld;
   
    private int tornJug;
    private int[] ultimesTirades = new int[4];
    private boolean desferRealitzat;
    private boolean pista;
   
   
    public void ctrlJoc() {
           
    }
   
    public int getTornjug() {
            return tornJug;
    }
    public int[] getUltimesTirades() {
            return ultimesTirades;
    }
    public boolean isDesferRealitzat() {
            return desferRealitzat;
    }
    public boolean getPista(){
            return pista;
    }
   
    public void setTornjug(int tornjug) {
            this.tornJug = tornjug;
    }
   
    public void setUltimesTirades(int[] ultimesTirades) {
            this.ultimesTirades = ultimesTirades;
    }
   
    public void setDesferRealitzat(boolean desferRealitzat) {
            this.desferRealitzat = desferRealitzat;
    }
    public void setPista(boolean pista){
            this.pista = pista;
    }
   
   
   
     //- DesferTirada(): bool
    public boolean desferTirada(Jugador j) {
        if (!conf.getDesfer() || desferRealitzat) return false;
        boolean b = false;
        if (tornJug == 1) {    
                b = t.desferTirada(tornJug,ultimesTirades[0],ultimesTirades[1]);
                if(b) {
                        desferRealitzat = true;
                        ultimesTirades[0] = -1;
                        ultimesTirades[1] = -1;
                }
        }
        else if(tornJug == 2){
                b = t.desferTirada(tornJug,ultimesTirades[2],ultimesTirades[3]);
                if (b){
                        desferRealitzat = true;
                        ultimesTirades[2] = -1;
                        ultimesTirades[3] = -1;
                }
        }
        return b;
}
   
     //- DonarPista(): string
    public String Pista(int n) {
            if (!pista) {
                    return alg.Pista(n);
            }
            return null;    
    }


   
   
    public boolean actualitzarTorn(int jug, int x, int y){
           
            Jugador j = null;
            if (tornJug == 1) {
                    j = j1;
                    ultimesTirades[0] = x;
                    ultimesTirades[1] = y;
            }
            else if (tornJug == 2) {
                    j = j2;
                    ultimesTirades[2] = x;
                    ultimesTirades[3] = y;
            }
            //actpunt
            int p = 0;
            if (pista) --p;
            if(desferRealitzat) --p;
            int nf = 1 + t.getComptador()/2;
            boolean b = false;
            int m = t.getMida();
            if(nf <= m){
                 p += 100-(100*j.getTempstirada()/conf.getTempsMax());
                 b = j.actualitzarPuntuacio(p,t.getMida(),1);
            }
            else {
                 p -= ((m-1)*200)/((m-2)*m) ;
                 p -= 100*j.getTempstirada()/conf.getTempsMax(); 
                 b = j.actualitzarPuntuacio(p);
            }
            //actTauler
            b = b && t.actualitzarTauler(jug,x,y);
            //actTemps
            b = b && (j.actualitzarTempspartida() && j.actualitzarTempstirada());
            //acttorn
            pista = false;
            desferRealitzat  = false;
            tornJug = (tornJug%2) + 1;
            return b;
    }


     //- guardarPartida() : bool
    public boolean guardarPartida() {
            return ctrld.guardar(conf.getConfiguracio(),j1,j1,Tornjug,t.getTauler(),t.getMida(),t.getComptador());
    }
     //- cargarPartida(): bool

}

